package jzqb.service;


import haha.life.common.CutPageBean;
import jzqb.bo.QBBKBo;
import jzqb.bo.StandKnowleageBo;
import jzqb.po.AuthorityGroupPo;
import jzqb.po.QBBKPo;
import jzqb.po.QBBKTemplatePo;
import jzqb.vo.QBBKVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 关注公众号：MarkerHub
 * @since 2020-09-22
 */
public interface QBBKService {

    /*---------------------我的词条--------------------------------*/

    /**
     * 情报百科--展示 我的词条,百科词条,词条审核
     *
     * @param qbbkBo
     * @return
     */
    CutPageBean<QBBKVo> showQBBK(QBBKBo qbbkBo);


    /**
     * 展示一条情报百科
     *
     * @param qbbkPo
     * @return
     */
    QBBKVo showSingleQBBK(QBBKPo qbbkPo);

    /**
     * 新建情报百科--我的词条
     *
     * @param qbbkPo
     * @return
     */
    Boolean addQBBK(QBBKPo qbbkPo) throws UnsupportedEncodingException;

    /**
     * 更改情报百科--前台
     *
     * @param qbbkPo
     * @return
     */
    Boolean updateQBBK(QBBKPo qbbkPo) throws UnsupportedEncodingException;

    /**
     * 退审-情报百科
     *
     * @param qbbkPo
     * @return
     */
    Boolean recallQBBK(QBBKPo qbbkPo);


    /**
     * 文件上传
     *
     * @param file     上传的文件
     * @param basePath 基础路径
     * @return
     */
    String uploading(MultipartFile file, String basePath);

    /**
     * 查询情报成果详情
     *
     * @param qbbkPo
     * @return
     */
    QBBKPo getQBBKDetail(QBBKPo qbbkPo);

    /**
     * 通过标志位(0:我的词条 1:百科词条 2:词条审核)获取领域数量
     *
     * @param qbbkBo
     * @return
     */
    List<StandKnowleageBo> getFieldNumByFlag(QBBKBo qbbkBo);

    /**
     * 获取当前用户所有百科词条-不同状态的数量
     *
     * @param qbbkBo
     * @return
     */
    List<StandKnowleageBo> getDiffStatusQBBKNum(QBBKBo qbbkBo);

    /**
     * 词条审核-过审或驳回
     *
     * @param qbbkPo
     * @return
     */
    Boolean reviewQBBK(QBBKPo qbbkPo);

    /**
     * 删除情报百科
     *
     * @param qbbkPo
     * @return
     */
    Boolean deleteQBBK(QBBKPo qbbkPo);

    /**
     * 获取权限组成员
     *
     * @param AuditGroupId
     * @return
     */
    AuthorityGroupPo getAuditPersons(Integer AuditGroupId);

    /**
     * 查询是否有-->新的情报百科待审数据
     *
     * @param qbbkBo
     * @return
     */
    int findNewQBFWAuditData(QBBKBo qbbkBo);



    /*====================模板====================================*/

    /**
     * 新建情报百科模板
     *
     * @param qbbkTemplatePo
     * @return
     */
    Object addQBBKTemplate(QBBKTemplatePo qbbkTemplatePo, HttpServletRequest request) throws UnsupportedEncodingException;

    /**
     * 修改情报百科模板
     *
     * @param qbbkTemplatePo
     * @return
     */
    Object updateQBBKTemplate(QBBKTemplatePo qbbkTemplatePo) throws UnsupportedEncodingException;

    /**
     * 展示模板
     *
     * @return
     */
    List<QBBKTemplatePo> showTemplateList();

    /**
     * 删除模板
     *
     * @param id
     * @return
     */
    Boolean delQBBKTemplate(Integer id);
}
